/*
 * Copyright 2008-2009 Aying.Net Powered by Fuchun.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *     http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package net.aying.media.audio;

import java.io.Serializable;

/**
 * {@code Audio} 接口定义了音频文件的属性信息。
 * 
 * @author  Fuchun
 * @version 1.0, 2009-07-20
 */
public interface Audio extends Cloneable, Serializable {

    /**
     * 返回音频格式信息。
     * 
     * @return 音频格式信息。
     */
    public AudioFormat getAudioFormat();
    
    /**
     * 返回音频文件扩展名。
     * 
     * @return 音频文件扩展名。
     */
//    public String getExtension();
    
    /**
     * 返回音频的标题信息。
     * 
     * @return 音频的标题信息。
     */
    public String getTitle();
    
    /**
     * 设置音频的标题信息。
     * 
     * @param title 音频的标题信息。
     */
    public void setTitle(String title);
    
    /**
     * 返回音频的艺术家信息。
     * 
     * @return 音频的艺术家信息。
     */
    public String getArtist();
    
    /**
     * 设置音频的艺术家信息。
     * 
     * @param artist 音频的艺术家信息。
     */
    public void setArtist(String artist);
    
    /**
     * 返回音频的专辑信息。
     * 
     * @return 音频的专辑信息。
     */
    public String getAlbum();
    
    /**
     * 设置音频的专辑信息。
     * 
     * @param album 音频的专辑信息。
     */
    public void setAlbum(String album);
    
    /**
     * 返回音频的音轨。
     * 
     * @return 音频的音轨。
     */
    public Integer getTrack();
    
    /**
     * 返回音频的声道。
     * 
     * @return 音频的声道。
     */
    public String getChannel();
    
    /**
     * 返回音频的频率(单位：Hz)。
     * 
     * @return 音频的频率。
     */
    public Integer getFrequency();
    
    /**
     * 返回音频的比特(单位：bit)。
     * 
     * @return 音频的比特。
     */
    public Integer getBitrate();
    
    /**
     * 返回音频的传输(播放)码率(单位：Kbps)。
     * 
     * @return 音频的传输(播放)码率。
     */
    public Integer getKbps();
    
    /**
     * 返回音频的时长(单位：秒[s])。
     * 
     * @return 音频的时长。
     */
    public Integer getLength();
}
